ํ๋ก ํธ์๋ ์ฑ๋ฅ์ด ๊ธฐ๊ธฐ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ๋ฏธ์น๋ ์ํฅ์ ์์๋ณด์ธ์. ์น API๋ก ์ ๋ ฅ ์๋น๋ฅผ ์ธก์ ํ๊ณ ์๋์ง ํจ์จ์ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ํํ์ ์ฃผ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค.
ํ๋ก ํธ์๋ ์ฑ๋ฅ๊ณผ ๋ฐฐํฐ๋ฆฌ ์๋ช : ์ง์ ๊ฐ๋ฅํ ์น์ ์ํ ์ ๋ ฅ ์๋น ์ธก์ ๋ฐ ์ต์ ํ
๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์ ๋ํ ์์กด๋๊ฐ ๋์์ง๊ณ ํ๊ฒฝ ์ํฅ์ ๋ํ ์ธ์์ด ์ปค์ง๋ ์ธ์์์, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ ๋ณด์ด์ง ์๋ ์ ๋ ฅ ์๋น๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์๊ฒ ์ค์ํ ๊ด์ฌ์ฌ๋ก ๋ ์ฌ๋์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ข ์ข ์๋, ๋ฐ์์ฑ, ์๊ฐ์ ์ถฉ์ค๋์ ์ง์คํ์ง๋ง, ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๊ฒฐ๊ณผ๋ฌผ์ ์๋์ง ๋ฐ์๊ตญ์ ์ฌ์ฉ์ ๊ฒฝํ, ๊ธฐ๊ธฐ ์๋ช , ์ฌ์ง์ด ์ ์ง๊ตฌ์ ํ๊ฒฝ ์ง์ ๊ฐ๋ฅ์ฑ์ ์๋นํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋๋ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ ฅ ์๋น๋ฅผ ์ดํดํ๊ณ , ์ถ๋ก ํ๋ฉฐ, ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ๊น์ด ํ๊ณ ๋ค์ด, ๊ฐ๋ฐ์๋ค์ด ์ธ์ ์ด๋์๋ ๋ชจ๋๋ฅผ ์ํ ๋ ํจ์จ์ ์ด๊ณ ์ง์ ๊ฐ๋ฅํ ์น์ ๊ตฌ์ถํ ์ ์๋๋ก ๋์ต๋๋ค.
์๋ฆฌ ์๋ ์๋ชจ: ์ ๋ ฅ ์๋น๊ฐ ์ ์ธ๊ณ์ ์ผ๋ก ์ค์ํ ์ด์
์ถฉ์ ์์ค์ด ์ ํ๋ ์ธ๋ด ์ง์ญ์ ์ฌ์ฉ์๊ฐ ์ค๋งํธํฐ์ผ๋ก ๊ธด๊ธํ ์์ ์ ์๋ฃํ๋ ค ํ๊ฑฐ๋, ๋ฏ์ ๋์๋ฅผ ์ฌํํ๋ ์ฌํ์๊ฐ ์ง๋์ ํต์ ์ ์ํด ๊ธฐ๊ธฐ ๋ฐฐํฐ๋ฆฌ์ ์์กดํ๋ ์ํฉ์ ์์ํด ๋ณด์ญ์์ค. ์ด๋ฌํ ์ฌ์ฉ์๋ค๊ณผ ์ ์ธ๊ณ ์๋ง์ ๋ค๋ฅธ ์ด๋ค์๊ฒ, ์ ๋ ฅ์ ๋ง์ด ์๋ชจํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋จ์ํ ๋ถํธํจ์ด ์๋๋ผ ์ฌ๊ฐํ ์ฅ๋ฒฝ์ด ๋ ์ ์์ต๋๋ค. ๋นํจ์จ์ ์ธ ํ๋ก ํธ์๋ ์ฝ๋์ ๊ฒฐ๊ณผ๋ ์ผ์์ ์ธ ์๋ ์ ํ๋ฅผ ํจ์ฌ ๋ฐ์ด๋์ต๋๋ค:
- ์ฌ์ฉ์ ๊ฒฝํ ์ ํ: ๋น ๋ฅด๊ฒ ์๋ชจ๋๋ ๋ฐฐํฐ๋ฆฌ๋ ๋ถ์๊ฐ, ์ข์ ๊ฐ, ์ ๋ขฐ๋ ํ๋ฝ์ผ๋ก ์ด์ด์ง๋๋ค. ์ฌ์ฉ์๋ ๋ ์๋์ง ํจ์จ์ ์ธ ๋์์ ์ฐพ์ ๋น์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์น์ฌ์ดํธ๋ฅผ ๋ ๋ ์ ์์ต๋๋ค.
- ๊ธฐ๊ธฐ ์๋ช ๋จ์ถ: ์ฆ์ ์ถฉ์ ์ฃผ๊ธฐ์ ์ ๋ ฅ ์๋ชจ๊ฐ ๋ง์ ์์ ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๊ณผ๋ํ ์ด์ ๋ฐฐํฐ๋ฆฌ ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฐ์ํํ์ฌ ๊ธฐ๊ธฐ ์๋ช ์ ๋จ์ถ์ํค๊ณ ์ ์ ํ๊ธฐ๋ฌผ์ ์ฆ๊ฐ์ํต๋๋ค. ์ด๋ ๊ธฐ๊ธฐ ๊ต์ฒด๊ฐ ์ด๋ ค์ด ๊ฒฝ์ ๊ถ์ ์ฌ์ฉ์๋ค์๊ฒ ๋ถ๊ท ํ์ ์ผ๋ก ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ํ๊ฒฝ์ ์ํฅ: ์ฌ์ฉ์ ๊ธฐ๊ธฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ์คํ ํ๋ ๋ฐ์ดํฐ ์ผํฐ์์ ์๋น๋๋ ๋ชจ๋ ์ ๋ ฅ์ ์๋์ง ์์์ ๊ธฐ์ฌํฉ๋๋ค. ์ด ์์๋ ์ข ์ข ์ฌ์ ๋ถ๊ฐ๋ฅํ ์๋์ง์์ผ๋ก ์ถฉ์กฑ๋์ด ํ์ ๋ฐฐ์ถ์ ์ฆ๊ฐ์ํค๊ณ ๊ธฐํ ๋ณํ๋ฅผ ์ ํ์ํต๋๋ค. ์ง์ ๊ฐ๋ฅํ ์น ๊ฐ๋ฐ์ ๋๋์ , ์ฌ์ ์ ํ์ ๊ณผ์ ๊ฐ ๋๊ณ ์์ต๋๋ค.
- ์ ๊ทผ์ฑ ๋ฐ ํฌ์ฉ์ฑ: ์ ์ธ๊ณ ๋ง์ ์ง์ญ์์ ํํ ๋ณผ ์ ์๋ ๊ตฌํ, ์ ์ฌ์, ๋๋ ๋ณด๊ธํ ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ค์ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํฅ์ ๋ถ๊ท ํ์ ์ผ๋ก ๋ฐ์ต๋๋ค. ์ ๋ ฅ ์๋น๋ฅผ ์ต์ ํํ๋ ๊ฒ์ ๋น์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ ๋์ ์ ์ธ๊ณ ์ฌ์ฉ์์ธต์๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ก์ ์ฐ๋ฆฌ๋ ๋์งํธ ๊ฒฝํ์ ํ์ฑํ๋ ์ต์ ์ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ ์์ ์ ์ ๋ ฅ ์ํฅ์ ์ดํดํ๊ณ ์ํํ๋ ๊ฒ์ ๋จ์ํ ์ต์ ํ ์์ ์ด ์๋๋ผ, ์ฌ์ฉ์์ ์ง๊ตฌ์ ๋ํ ์ฑ ์์ ๋๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ ฅ ์๋น ์ดํดํ๊ธฐ: ์๋์ง ์ฃผ๋ฒ๋ค
ํต์ฌ์ ์ผ๋ก, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๊ธฐ์ ํ๋์จ์ด ๊ตฌ์ฑ ์์๊ฐ ์์ ์ ์ํํ๋๋ก ์๊ตฌํจ์ผ๋ก์จ ์ ๋ ฅ์ ์๋นํฉ๋๋ค. ์์ ์ด ๋ง์์๋ก ์ ๋ ฅ๋ ๋ ๋ง์ด ์๋น๋ฉ๋๋ค. ์ ๋ ฅ ์๋ชจ์ ํฌ๊ฒ ๊ธฐ์ฌํ๋ ์ฃผ์ ๊ตฌ์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
CPU ์ฌ์ฉ๋: ๋๋์ ์์ ๋ถํ
์ค์ ์ฒ๋ฆฌ ์ฅ์น(CPU)๋ ์ข ์ข ๊ฐ์ฅ ๋ฐฐ๊ณ ํ ๊ตฌ์ฑ ์์์ ๋๋ค. CPU์ ์ ๋ ฅ ์๋น๋ ์ํํ๋ ๊ณ์ฐ์ ๋ณต์ก์ฑ๊ณผ ์์ ๋น๋กํ์ฌ ์ฆ๊ฐํฉ๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๋ค์์ ํฌํจํฉ๋๋ค:
- JavaScript ์คํ: ๋ณต์กํ JavaScript ์ฝ๋๋ฅผ ํ์ฑ, ์ปดํ์ผ, ์คํํ๋ ์์ . ๊ณผ๋ํ ๊ณ์ฐ, ๋๊ท๋ชจ ๋ฐ์ดํฐ ์กฐ์, ๊ด๋ฒ์ํ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง์ CPU๋ฅผ ๊ณ์ ๋ฐ์๊ฒ ๋ง๋ญ๋๋ค.
- ๋ ์ด์์ ๋ฐ ๋ ๋๋ง: ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(DOM)์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ ์คํ์ผ์ ์ฌ๊ณ์ฐํ๊ณ , ์์์ ๋ ์ด์์์ ๋ค์ ์ก๊ณ , ํ๋ฉด์ ์ผ๋ถ๋ฅผ ๋ค์ ๊ทธ๋ ค์ผ ํ ์ ์์ต๋๋ค. ๋น๋ฒํ๊ณ ๊ด๋ฒ์ํ ๋ฆฌํ๋ก์ฐ(reflow)์ ๋ฆฌํ์ธํธ(repaint)๋ CPU ์ง์ฝ์ ์ ๋๋ค.
- ์ด๋ฒคํธ ์ฒ๋ฆฌ: ์๋ง์ ์ฌ์ฉ์ ์ํธ์์ฉ(ํด๋ฆญ, ์คํฌ๋กค, ํธ๋ฒ)์ ์ฒ๋ฆฌํ๋ ๊ฒ์ JavaScript ๋ฐ ๋ ๋๋ง ์์ ์ ์ฐ์ ๋ฐ์์ ์ผ์ผํฌ ์ ์์ผ๋ฉฐ, ํนํ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ๋์ง ์์ ๊ฒฝ์ฐ(์: ๋๋ฐ์ด์ฑ์ด๋ ์ค๋กํ๋ง ์์ด) ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ : ์๋น์ค ์์ปค, ์น ์์ปค ๋๋ ๊ธฐํ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ ๋ฉ์ธ ์ค๋ ๋์์ ๋ฒ์ด๋ ์์ง๋ง ์ฌ์ ํ CPU ๋ฆฌ์์ค๋ฅผ ํ์ฉํฉ๋๋ค.
๋คํธ์ํฌ ํ๋: ๋ฐ์ดํฐ ๊ฐ์ฆ
Wi-Fi, ์ ๋ฃฐ๋ฌ, ์ ์ ๋ฑ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๊ฒ์ ์๋์ง๋ฅผ ๋ง์ด ์๋ชจํ๋ ๊ณผ์ ์ ๋๋ค. ๊ธฐ๊ธฐ์ ๋ฌด์ ํต์ ์ฅ์น๊ฐ ์ผ์ ธ ์๊ณ ํ๋ฐํ๊ฒ ์ ํธ๋ฅผ ๋ณด๋ด๊ณ ๋ฐ์์ผ ํฉ๋๋ค. ๋คํธ์ํฌ ๊ด๋ จ ์ ๋ ฅ ์๋ชจ์ ๊ธฐ์ฌํ๋ ์์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํฐ ๋ฆฌ์์ค ํฌ๊ธฐ: ์ต์ ํ๋์ง ์์ ์ด๋ฏธ์ง, ๋น๋์ค, ๋์ฉ๋ JavaScript ๋ฒ๋ค ๋ฐ CSS ํ์ผ์ ๋ ๋ง์ ๋ฐ์ดํฐ ์ ์ก์ ํ์๋ก ํฉ๋๋ค.
- ์ฆ์ ์์ฒญ: ํ ๋ฒ์ ๋ฌถ์ด์ ๋ณด๋ด์ง ์์ ๋ง์ ์์ ์์ฒญ์ด๋ ์ง์์ ์ธ ํด๋ง์ ๋คํธ์ํฌ ๋ฌด์ ํต์ ์ฅ์น๋ฅผ ๋ ์ค๋ ๊ธฐ๊ฐ ํ์ฑ ์ํ๋ก ์ ์งํฉ๋๋ค.
- ๋นํจ์จ์ ์ธ ์บ์ฑ: ๋ฆฌ์์ค๊ฐ ์ ๋๋ก ์บ์๋์ง ์์ผ๋ฉด ๋ฐ๋ณต์ ์ผ๋ก ๋ค์ด๋ก๋๋์ด ๋ถํ์ํ ๋คํธ์ํฌ ํ๋์ ์ ๋ฐํฉ๋๋ค.
- ์ด์ ํ ๋คํธ์ํฌ ํ๊ฒฝ: ๋๋ฆฌ๊ฑฐ๋ ๋ถ์์ ํ ๋คํธ์ํฌ(๋ง์ ์ง์ญ์์ ํํจ)์์๋ ๊ธฐ๊ธฐ๊ฐ ์ฐ๊ฒฐ์ ์ค์ ํ๊ณ ์ ์งํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ ์กํ๋๋ผ ๋ ๋ง์ ์ ๋ ฅ์ ์๋นํ ์ ์์ต๋๋ค.
GPU ์ฌ์ฉ๋: ์๊ฐ์ ๋ถํ
๊ทธ๋ํฝ ์ฒ๋ฆฌ ์ฅ์น(GPU)๋ ์๊ฐ์ ์์, ํนํ ๋ณต์กํ ๊ทธ๋ํฝ, ์ ๋๋ฉ์ด์ , ๋น๋์ค ์ฌ์์ ๋ ๋๋ง์ ์ฒ๋ฆฌํฉ๋๋ค. ํน์ ๊ทธ๋ํฝ ์์ ์์๋ CPU๋ณด๋ค ํจ์จ์ ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง, ์ฌ์ ํ ์๋นํ ์ ๋ ฅ ์๋น์์ด ๋ ์ ์์ต๋๋ค:
- ๋ณต์กํ ์ ๋๋ฉ์ด์ : ํ๋์จ์ด ๊ฐ์ CSS ๋ณํ(transform) ๋ฐ ํฌ๋ช ๋(opacity) ๋ณ๊ฒฝ์ ํจ์จ์ ์ด์ง๋ง, ๋ ์ด์์์ด๋ ํ์ธํ ์์ฑ๊ณผ ๊ด๋ จ๋ ์ ๋๋ฉ์ด์ ์ CPU๋ก ๋์ฒด๋์ด GPU ์์ ์ ์ ๋ฐํ๊ณ ๋ ๋์ ์ ๋ ฅ ์ฌ์ฉ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- WebGL ๋ฐ Canvas: ๊ฒ์์ด๋ ๋ฐ์ดํฐ ์๊ฐํ์์ ํํ ๋ณผ ์ ์๋ ์ง์ฝ์ ์ธ 2D/3D ๊ทธ๋ํฝ ๋ ๋๋ง์ GPU์ ์ง์ ์ ์ธ ๋ถ๋ด์ ์ค๋๋ค.
- ๋น๋์ค ์ฌ์: ๋น๋์ค ํ๋ ์์ ๋์ฝ๋ฉํ๊ณ ๋ ๋๋งํ๋ ๊ฒ์ ์ฃผ๋ก GPU์ ์์ ์ ๋๋ค.
๊ธฐํ ์์ธ
ํ๋ก ํธ์๋ ์ฝ๋์ ์ํด ์ง์ ์ ์ด๋์ง๋ ์์ง๋ง, ๋ค๋ฅธ ์์ธ๋ค๋ ์ธ์ง๋๋ ์ ๋ ฅ ์๋น์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค:
- ํ๋ฉด ๋ฐ๊ธฐ: ๋์คํ๋ ์ด๋ ์ฃผ์ ์ ๋ ฅ ์๋ชจ์์ด๋ฉฐ, ํนํ ๋ฐ์ ์ค์ ์์ ๊ทธ๋ ์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ด๋ฅผ ์ง์ ์ ์ดํ์ง๋ ์์ง๋ง, ๊ณ ๋๋น์ ๊ฐ๋ ์ฑ ๋์ ์ธํฐํ์ด์ค๋ ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก ๋ฐ๊ธฐ๋ฅผ ๋์ผ ํ์๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- ๊ธฐ๊ธฐ ํ๋์จ์ด: ๊ธฐ๊ธฐ๋ง๋ค ํ๋์จ์ด ํจ์จ์ฑ์ด ๋ค๋ฆ ๋๋ค. ์ ์ฌ์ ๊ธฐ๊ธฐ์ ๋ง๊ฒ ์ต์ ํํ๋ฉด ๋ ๋์ ์ ์ธ๊ณ ์ฌ์ฉ์์ธต์๊ฒ ๋ ๋์ ๊ฒฝํ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
์๋์ง ์ธ์ ์น ๊ฐ๋ฐ์ ๋ถ์: ์ ์ง๊ธ์ธ๊ฐ?
์๋์ง ์ธ์ ์น ๊ฐ๋ฐ์ ๋ํ ๋๋ ฅ์ ์ฌ๋ฌ ์์ธ์ด ๋ณตํฉ์ ์ผ๋ก ์์ฉํ ๊ฒฐ๊ณผ์ ๋๋ค:
- ์ง์ ๊ฐ๋ฅ์ฑ์ ์ํ ์ ์ง๊ตฌ์ ๋ ธ๋ ฅ: ํ๊ฒฝ ๋ฌธ์ ๊ฐ ์ฌ๊ฐํด์ง์ ๋ฐ๋ผ ์ ์ธ๊ณ ์ฐ์ ๊ณ๋ ํ์ ๋ฐ์๊ตญ์ ๋ฉด๋ฐํ ์กฐ์ฌํ๊ณ ์์ต๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌํจํ ์ํํธ์จ์ด๋ ์ฌ์ฉ์ ๊ธฐ๊ธฐ์ ๋ฐ์ดํฐ ์ผํฐ ์์ค ๋ชจ๋์์ ์๋์ง ์๋น์ ์ฃผ์ ์์ธ์ผ๋ก ์ ์ ๋ ์ธ์๋๊ณ ์์ต๋๋ค. '๊ทธ๋ฆฐ ์ปดํจํ '๊ณผ '์ง์ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์์ง๋์ด๋ง' ๊ฐ๋ ์ด ์ฃผ๋ชฉ๋ฐ๊ณ ์์ต๋๋ค.
- ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์ ๋ณดํธํ: ์ค๋งํธํฐ๊ณผ ํ๋ธ๋ฆฟ์ ์ด์ ์์ญ์ต ๋ช , ํนํ ์ ํฅ ์์ฅ์์ ์ธํฐ๋ท์ ์ ์ํ๋ ์ฃผ์ ์๋จ์ ๋๋ค. ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ์ด๋ค ์ฌ์ฉ์์๊ฒ ๊ฐ์ฅ ์ค์ํ ๊ด์ฌ์ฌ์ ๋๋ค.
- ์ฌ์ฉ์ ๊ธฐ๋์น ์ฆ๊ฐ: ์ฌ์ฉ์๋ค์ ๋ช ๋ถ ๋ง์ ๋ฐฐํฐ๋ฆฌ๋ฅผ ์๋ชจํ์ง ์๋ ์ํํ๊ณ ๋น ๋ฅธ ๊ฒฝํ์ ๊ธฐ๋ํฉ๋๋ค. ์ฑ๋ฅ์ ๋ ์ด์ ์๋๋ง์ ๋ฌธ์ ๊ฐ ์๋๋ผ ๋ด๊ตฌ์ฑ์ ๋ฌธ์ ์ด๊ธฐ๋ ํฉ๋๋ค.
- ์น ๊ธฐ๋ฅ์ ๋ฐ์ : ํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ทธ ์ด๋ ๋๋ณด๋ค ์ ๊ตํด์ ธ์ ํ๋ ๋ค์ดํฐ๋ธ ์ฑ์๋ง ๊ตญํ๋์๋ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๊ฒ ๋์์ต๋๋ค. ํฐ ํ์๋ ํฐ ์ฑ ์์ด ๋ฐ๋ฅด๋ฉฐ, ๋ ํฐ ์ ๋ ฅ ์๋น์ ๊ฐ๋ฅ์ฑ๋ ํจ๊ป ์ต๋๋ค.
์ด๋ฌํ ์ธ์์ด ๋์์ง๋ฉด์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์ด ์์ ์ ๊ธฐ์ ์ ์ ๊ทผํ๋ ๋ฐฉ์์ ๋ณํ๊ฐ ํ์ํด์ก๊ณ , ์๋์ง ํจ์จ์ ํต์ฌ ์ฑ๋ฅ ์งํ๋ก ํตํฉํด์ผ ํฉ๋๋ค.
๊ธฐ์กด ํ๋ก ํธ์๋ ์ฑ๋ฅ API: ์ง์ ์ ์ธ ์ธก์ ์ ์๋์ง๋ง ๊ธฐ๋ฐ์ด ๋จ
์น ํ๋ซํผ์ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ๋ค์ํ ์ธก๋ฉด์ ์ธก์ ํ๊ธฐ ์ํ ํ๋ถํ API ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ API๋ ๊ฐ์ ์ ์ผ๋ก ์ ๋ ฅ ์๋น์ ๊ธฐ์ฌํ๋ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ์ง๋ง, ์ง์ ์ ์ธ ์ ๋ ฅ ์ธก์ ์ ๊ดํ ํ๊ณ์ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ฃผ์ ์ฑ๋ฅ API์ ์ ๋ ฅ๊ณผ์ ๊ด๋ จ์ฑ:
- Navigation Timing API: (
performance.timing- ๋ ๊ฑฐ์,performance.getEntriesByType('navigation')- ์ต์ )
๋คํธ์ํฌ ์ง์ฐ, ๋ฆฌ๋๋ ์ , DOM ํ์ฑ, ๋ฆฌ์์ค ๋ก๋ฉ์ ํฌํจํ ์ ์ฒด ๋ฌธ์ ๋ก๋ ์๊ฐ์ ์ธก์ ํฉ๋๋ค. ๊ธด ํ์ ์๊ฐ์ ์ข ์ข ์ฅ์๊ฐ์ ๋คํธ์ํฌ ๋ฌด์ ํต์ ํ๋๊ณผ CPU ์ฃผ๊ธฐ๋ฅผ ์๋ฏธํ๋ฏ๋ก ๋ ๋์ ์ ๋ ฅ ์ฌ์ฉ์ ์์ํฉ๋๋ค. - Resource Timing API: (
performance.getEntriesByType('resource'))
๊ฐ๋ณ ๋ฆฌ์์ค(์ด๋ฏธ์ง, ์คํฌ๋ฆฝํธ, ์คํ์ผ์ํธ)์ ๋ํ ์์ธํ ํ์ด๋ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋คํธ์ํฌ ์ ๋ ฅ ์๋ชจ์ ๊ธฐ์ฌํ๋ ํฌ๊ฑฐ๋ ๋๋ฆฌ๊ฒ ๋ก๋๋๋ ์์ฐ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. - User Timing API: (
performance.mark(),performance.measure())
๊ฐ๋ฐ์๊ฐ JavaScript ์ฝ๋ ๋ด์ ์ฌ์ฉ์ ์ง์ ์ฑ๋ฅ ํ์ ๋ฐ ์ธก์ ์ ์ถ๊ฐํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ CPU ์ง์ฝ์ ์ผ ์ ์๋ ํน์ ํจ์๋ ๊ตฌ์ฑ ์์๋ฅผ ํ๋กํ์ผ๋งํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. - Long Tasks API: (
performance.getEntriesByType('longtask'))
๋ธ๋ผ์ฐ์ ์ ๋ฉ์ธ ์ค๋ ๋๊ฐ 50๋ฐ๋ฆฌ์ด ์ด์ ์ฐจ๋จ๋ ๊ธฐ๊ฐ์ ์๋ณํฉ๋๋ค. ๊ธด ์์ ์ ๋์ CPU ์ฌ์ฉ๋ ๋ฐ ์๋ต์ฑ ๋ฌธ์ ์ ์ง์ ์ ์ธ ์๊ด๊ด๊ณ๊ฐ ์์ผ๋ฉฐ, ์ด๋ ์๋นํ ์ ๋ ฅ ์๋น์์ ๋๋ค. - Paint Timing API: (
performance.getEntriesByType('paint'))
์ฒซ ๋ฒ์งธ ์ฝํ ์ธ ๊ฐ ํ๋ฉด์ ๊ทธ๋ ค์ง๋ ์์ ์ ๋ํ๋ด๋ ์ฒซ ์ฝํ ์ธ ํ ํ์ธํธ(FCP)์ ๊ฐ์ ๋ฉํธ๋ฆญ์ ์ ๊ณตํฉ๋๋ค. FCP๊ฐ ์ง์ฐ๋๋ค๋ ๊ฒ์ ์ข ์ข CPU๊ฐ ํ์ฑ ๋ฐ ๋ ๋๋ง์ผ๋ก ๋ฐ์๊ฑฐ๋ ๋คํธ์ํฌ๊ฐ ๋๋ฆฌ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. - Interaction to Next Paint (INP): (์ฝ์ด ์น ๋ฐ์ดํ)
์ฌ์ฉ์๊ฐ ํ์ด์ง์ ๊ฐ๋ ๋ชจ๋ ์ํธ์์ฉ์ ์ง์ฐ ์๊ฐ์ ์ธก์ ํฉ๋๋ค. ๋์ INP๋ ๋ฉ์ธ ์ค๋ ๋๊ฐ ์๋ตํ์ง ์์์ ๋ํ๋ด๋ฉฐ, ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณผ๋ํ JavaScript ๋๋ ๋ ๋๋ง ์์ ์ผ๋ก ์ธํ ๊ฒ์ด๊ณ , ์ง์ ์ ์ผ๋ก ๋์ CPU ์ฌ์ฉ๋์ ์๋ฏธํฉ๋๋ค. - Layout Instability (CLS): (์ฝ์ด ์น ๋ฐ์ดํ)
์์์น ๋ชปํ ๋ ์ด์์ ์ด๋์ ์ธก์ ํฉ๋๋ค. ์ฃผ๋ก UX ๋ฉํธ๋ฆญ์ด์ง๋ง, ๋น๋ฒํ๊ฑฐ๋ ํฐ ๋ ์ด์์ ์ด๋์ CPU๊ฐ ์ง์์ ์ผ๋ก ์์น๋ฅผ ์ฌ๊ณ์ฐํ๊ณ ๋ ๋๋งํ๊ณ ์์์ ์๋ฏธํ๋ฉฐ, ๋ ๋ง์ ์ ๋ ฅ์ ์๋นํฉ๋๋ค.
์ด๋ฌํ API๋ ์๊ฐ๊ณผ ์๋ต์ฑ์ ์ธก์ ํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ํดํท์ ์ ๊ณตํ์ง๋ง, ์ํธ(watts)๋ ์ค(Joules) ๋จ์์ ์ ๋ ฅ ์๋น์ ๋ํ ๋ฉํธ๋ฆญ์ ์ง์ ๋ ธ์ถํ์ง๋ ์์ต๋๋ค. ์ด ์ฐจ์ด์ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
๊ฒฉ์ฐจ: ๋ธ๋ผ์ฐ์ ๋ด ์ง์ ์ ์ธ ๋ฐฐํฐ๋ฆฌ/์ ๋ ฅ ์ธก์ API
์น ์ ํ๋ฆฌ์ผ์ด์ ๋ด์์ ์ง์ ์ ๋ ฅ์ ์ธก์ ํ๋ ค๋ ์๊ตฌ๋ ์ดํดํ ์ ์์ง๋ง, ์ด๋ ์ฃผ๋ก ๋ณด์, ๊ฐ์ธ ์ ๋ณด ๋ณดํธ, ๊ธฐ์ ์ ์คํ ๊ฐ๋ฅ์ฑ ์ธก๋ฉด์์ ์ด๋ ค์์ผ๋ก ๊ฐ๋ ์ฐจ ์์ต๋๋ค.
๋ฐฐํฐ๋ฆฌ ์ํ API (๋ ๊ฑฐ์ ๋ฐ ์ ํ์ )
ํ๋ ๊ธฐ๊ธฐ ๋ฐฐํฐ๋ฆฌ ์ํ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ API๋ ๋ฐฐํฐ๋ฆฌ ์ํ API(Battery Status API)์์ผ๋ฉฐ, navigator.getBattery()๋ฅผ ํตํด ์ ๊ทผํ์ต๋๋ค. ์ด API๋ ๋ค์๊ณผ ๊ฐ์ ์์ฑ์ ์ ๊ณตํ์ต๋๋ค:
charging: ๊ธฐ๊ธฐ๊ฐ ์ถฉ์ ์ค์ธ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ๋ถ๋ฆฌ์ธ ๊ฐ.chargingTime: ์์ ํ ์ถฉ์ ๋ ๋๊น์ง ๋จ์ ์๊ฐ.dischargingTime: ๋ฐฐํฐ๋ฆฌ๊ฐ ์์ง๋ ๋๊น์ง ๋จ์ ์๊ฐ.level: ํ์ฌ ๋ฐฐํฐ๋ฆฌ ์ถฉ์ ์์ค (0.0์์ 1.0).
ํ์ง๋ง ์ด API๋ ์ฌ๊ฐํ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฌธ์ ๋ก ์ธํด ์ต์ ๋ธ๋ผ์ฐ์ (ํนํ Firefox์ Chrome)์์ ๋๋ถ๋ถ ์ฌ์ฉ์ด ์ค๋จ๋๊ฑฐ๋ ์ ํ๋์์ต๋๋ค. ์ฃผ๋ ๋ฌธ์ ๋ ๋ฐฐํฐ๋ฆฌ ์์ค, ์ถฉ์ ์ํ, ๋ฐฉ์ ์๊ฐ์ ๊ฒฐํฉํ๋ฉด ๋ธ๋ผ์ฐ์ ํ๊ฑฐํ๋ฆฐํ ์ ๊ธฐ์ฌํ ์ ์๋ค๋ ๊ฒ์ด์์ต๋๋ค. ์น์ฌ์ดํธ๋ ์ํฌ๋ฆฟ ๋ชจ๋ ์ธ์ ์ ๋๋๋ค๊ฑฐ๋ ์ฟ ํค๋ฅผ ์ง์ด ํ์๋ ์ด๋ฌํ ๋์ ๊ฐ์ ๊ด์ฐฐํ์ฌ ์ฌ์ฉ์๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ ์ ์์๊ณ , ์ด๋ ์๋นํ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ์ํ์ ์ด๋ํ์ต๋๋ค. ๋ํ ๊ธฐ๊ธฐ ์ ์ฒด์ ๋ฐฐํฐ๋ฆฌ ์ํ๋ง ์ ๊ณตํ์ ๋ฟ, ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ์ ๋ ฅ ์๋ชจ๋์ ์ ๊ณตํ์ง ์์์ต๋๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ง์ ์ ์ธ ์ ๋ ฅ ์ธก์ ์ด ์ด๋ ค์ด ์ด์ :
๋ฐฐํฐ๋ฆฌ ์ํ API์ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฌธ์ ๋ฅผ ๋์ด, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํด ์ธ๋ถํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ์ ๋ ฅ ์๋น ๋ฉํธ๋ฆญ์ ์ ๊ณตํ๋ ๊ฒ์ ๊ทผ๋ณธ์ ์ธ ๊ธฐ์ ์ ์ฅ์ ๋ฌผ์ ์ง๋ฉดํฉ๋๋ค:
- ๋ณด์ ๋ฐ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ: ์น์ฌ์ดํธ์ ํ๋์จ์ด ์ ๋ ฅ ์ผ์์ ๋ํ ์ง์ ์ ์ธ ์ ๊ทผ ๊ถํ์ ๋ถ์ฌํ๋ฉด ์ฌ์ฉ์์ ๊ธฐ๊ธฐ ์ฌ์ฉ ํจํด, ํ๋, ์ฌ์ง์ด ๋ค๋ฅธ ๋ฐ์ดํฐ์ ์๊ด ๋ถ์๋ ๊ฒฝ์ฐ ์์น ์ ๋ณด๊น์ง ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ๋ ธ์ถ๋ ์ ์์ต๋๋ค.
- ์ด์์ฒด์ /ํ๋์จ์ด ์ถ์ํ: ์ด์์ฒด์ (Windows, macOS, Android, iOS)์ ๊ธฐ๋ณธ ํ๋์จ์ด๋ ์์คํ ์์ค์์ ์ ๋ ฅ์ ๊ด๋ฆฌํ๋ฉฐ, ๊ฐ๋ณ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก๋ถํฐ ์ด๋ฅผ ์ถ์ํํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ด OS ์๋๋ฐ์ค ๋ด์์ ์คํ๋๋ฉฐ, ์ด๋ฌํ ์์ ํ๋์จ์ด ๋ฐ์ดํฐ๋ฅผ ์น ํ์ด์ง์ ์ง์ ๋ ธ์ถํ๋ ๊ฒ์ ๋ณต์กํ๊ณ ๋ณด์ ์ํ์ ์ด๋ํฉ๋๋ค.
- ์ธ๋ถํ ๋ฌธ์ : ํน์ ์น ์ ํ๋ฆฌ์ผ์ด์ , ๋๋ ์ฌ์ง์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ๋ถ๋ถ(์: ๋จ์ผ JavaScript ํจ์)์ ์ ๋ ฅ ์๋น๋ฅผ ์ ํํ๊ฒ ๊ท์์ํค๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต์ต๋๋ค. ์ ๋ ฅ์ ๋ธ๋ผ์ฐ์ ์์ฒด, ์ด์์ฒด์ , ๋ค๋ฅธ ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํด ์ข ์ข ๋์์ ์ฌ์ฉ๋๋ ๊ณต์ ๊ตฌ์ฑ ์์(CPU, GPU, ๋คํธ์ํฌ ๋ฌด์ ํต์ ์ฅ์น)์ ์ํด ์๋ชจ๋ฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ์๋๋ฐ์ค ์ ํ: ์น ๋ธ๋ผ์ฐ์ ๋ ๋ณด์๊ณผ ์์ ์ฑ์ ์ํด ์น ํ์ด์ง์ ๊ธฐ๋ณธ ์์คํ ๋ฆฌ์์ค ์ ๊ทผ์ ์ ํํ๋ ๋ณด์ ์๋๋ฐ์ค๋ก ์ค๊ณ๋์์ต๋๋ค. ์ ๋ ฅ ์ผ์์ ์ง์ ์ ๊ทผํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ์ด ์๋๋ฐ์ค๋ฅผ ๋ฒ์ด๋๋ ์ผ์ ๋๋ค.
์ด๋ฌํ ์ ์ฝ์ ๊ณ ๋ คํ ๋, ๊ฐ๊น์ด ๋ฏธ๋์ ์น ๊ฐ๋ฐ์๋ค์ด ์ง์ ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ์ ๋ ฅ ์ธก์ API๋ฅผ ๋๋ฆฌ ์ฌ์ฉํ ์ ์๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ ๋งค์ฐ ๋ฎ์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ์ ์ ๊ทผ ๋ฐฉ์์ ์ง์ ์ธก์ ์์ ์๊ด๊ด๊ณ๊ฐ ์๋ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ถ๋ก ๋ฐ ์ต์ ํ๋ก ์ ํ๋์ด์ผ ํฉ๋๋ค.
๊ฒฉ์ฐจ ํด์: ์ฑ๋ฅ ๋ฉํธ๋ฆญ์์ ์ ๋ ฅ ์๋น ์ถ๋ก ํ๊ธฐ
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ์ ์ธ ์ ๋ ฅ ์ธก์ ์ด ๋นํ์ค์ ์ด๋ฏ๋ก, ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ ๊ฐ์ ์ ์ด์ง๋ง ํจ๊ณผ์ ์ธ ์ ๋ต์ ์์กดํด์ผ ํฉ๋๋ค: ์๋์ง ์ฌ์ฉ๊ณผ ์๊ด๊ด๊ณ๊ฐ ์๋ ๊ธฐ๋ณธ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ๊ผผ๊ผผํ๊ฒ ์ต์ ํํ์ฌ ์ ๋ ฅ ์๋น๋ฅผ ์ถ๋ก ํ๋ ๊ฒ์ ๋๋ค. ์์น์ ๊ฐ๋จํฉ๋๋ค: ๋ ์ ์ ์์ ์ ์ํํ๊ฑฐ๋ ์์ ์ ๋ ํจ์จ์ ์ผ๋ก ์ํํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ ์ ์ ๋ ฅ์ ์๋นํ ๊ฒ์ ๋๋ค.
์ ๋ ฅ ์ํฅ ๋ชจ๋ํฐ๋ง ๋ฐ ์ถ๋ก ์ ์ํ ์ฃผ์ ๋ฉํธ๋ฆญ:
1. CPU ์ฌ์ฉ๋: ํต์ฌ ์๊ด ์์
๋์ CPU ์ฌ์ฉ๋์ ์ ์ฌ์ ์ธ ์ ๋ ฅ ์๋ชจ์ ๊ฐ์ฅ ์ง์ ์ ์ธ ์งํ์ ๋๋ค. CPU๋ฅผ ์ฅ์๊ฐ ๋ฐ์๊ฒ ๋ง๋๋ ๋ชจ๋ ๊ฒ์ ๋ ๋ง์ ์ ๋ ฅ์ ์๋นํฉ๋๋ค. ๋ค์์ ํตํด CPU ํ๋์ ์ถ๋ก ํ ์ ์์ต๋๋ค:
- ๊ธด JavaScript ์คํ ์๊ฐ:
Long Tasks API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์๋ณํฉ๋๋ค.performance.measure()๋ ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ํจ์๋ฅผ ํ๋กํ์ผ๋งํ์ฌ CPU ์ง์ฝ์ ์ธ ์ฝ๋๋ฅผ ์ฐพ์ต๋๋ค. - ๊ณผ๋ํ ๋ ๋๋ง ๋ฐ ๋ ์ด์์: ๋น๋ฒํ๊ณ ํฐ ๋ฆฌํ๋ก์ฐ(๋ ์ด์์ ์ฌ๊ณ์ฐ)์ ๋ฆฌํ์ธํธ๋ CPU ์ง์ฝ์ ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ์ฝ์์ 'Performance' ํญ๊ณผ ๊ฐ์ ๋๊ตฌ๋ ๋ ๋๋ง ํ๋์ ์๊ฐํํ ์ ์์ต๋๋ค. ๋์ ๋ ์ด์์ ์ด๋(CLS)์ ๋ ์ด์์ ๋ถ์์ ์ฑ์ ์งํ์ด๋ฉฐ, ์ด๋ CPU๊ฐ ๋ ๋ง์ ์์ ์ ํ๊ณ ์์์ ์๋ฏธํฉ๋๋ค.
- ์ ๋๋ฉ์ด์ ๋ฐ ์ํธ์์ฉ: ๋ณต์กํ ์ ๋๋ฉ์ด์ , ํนํ ๋ ์ด์์ ์์ฑ์ ์์ ํ๋ ์ ๋๋ฉ์ด์ ์ CPU๋ฅผ ํ์๋ก ํฉ๋๋ค. ๋์ ๋ค์ ํ์ธํธ์ ๋ํ ์ํธ์์ฉ(INP) ์ ์๋ CPU๊ฐ ์ฌ์ฉ์ ์ ๋ ฅ์ ์๋ตํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๊ณ ์์์ ์์ฌํฉ๋๋ค.
2. ๋คํธ์ํฌ ํ๋: ๋ฌด์ ํต์ ์ฅ์น์ ์๊ตฌ
๊ธฐ๊ธฐ์ ๋คํธ์ํฌ ๋ฌด์ ํต์ ์ฅ์น๋ ์๋นํ ์ ๋ ฅ ์๋น์์ ๋๋ค. ํ์ฑ ์๊ฐ๊ณผ ๋ฐ์ดํฐ ์ ์ก๋์ ์ต์ํํ๋ฉด ์ ๋ ฅ ์ฌ์ฉ์ด ์ง์ ์ ์ผ๋ก ์ค์ด๋ญ๋๋ค. ๋ค์์ ํตํด ๋คํธ์ํฌ ์ํฅ์ ์ถ๋ก ํ ์ ์์ต๋๋ค:
- ํฐ ๋ฆฌ์์ค ํฌ๊ธฐ:
Resource Timing API๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ด๋ก๋๋ ๋ชจ๋ ์์ฐ์ ํฌ๊ธฐ๋ฅผ ํ์ธํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ์ ๋คํธ์ํฌ ํญํฌ์ ์ฐจํธ๋ฅผ ๊ฒ์ฌํ์ฌ ํฐ ํ์ผ์ ์ฐพ์๋ ๋๋ค. - ๊ณผ๋ํ ์์ฒญ: ํจ๊ณผ์ ์ธ ์บ์ฑ ์์ด ๋ง์ ์์ HTTP ์์ฒญ์ด ๋ฐ์ํ๋ฉด ๋ฌด์ ํต์ ์ฅ์น๊ฐ ํ์ฑ ์ํ๋ก ์ ์ง๋ฉ๋๋ค.
- ๋นํจ์จ์ ์ธ ์บ์ฑ: ์ ์ ํ HTTP ์บ์ฑ์ด๋ ์๋น์ค ์์ปค ์บ์ฑ์ด ์์ผ๋ฉด ๋ฐ๋ณต์ ์ธ ๋ค์ด๋ก๋๋ฅผ ๊ฐ์ ํฉ๋๋ค.
3. GPU ์ฌ์ฉ๋: ์๊ฐ์ ์ฒ๋ฆฌ ๋ถํ
์น API๋ฅผ ํตํด ์ง์ ์ ๋ํํ๊ธฐ๋ ๋ ์ด๋ ต์ง๋ง, GPU ์์ ์ ์๊ฐ์ ๋ณต์ก์ฑ ๋ฐ ํ๋ ์ ์๋์ ์๊ด๊ด๊ณ๊ฐ ์์ต๋๋ค. ๋ค์์ ๊ด์ฐฐํ์ฌ GPU ํ๋์ ์ถ๋ก ํ ์ ์์ต๋๋ค:
- ์ด์ ์๋ ๋์ ํ๋ ์ ์๋(FPS): ์๋ฌด๊ฒ๋ ๋ณํ์ง ์๋๋ฐ๋ ์ง์์ ์ผ๋ก 60 FPS๋ก ๋ ๋๋งํ๋ ๊ฒ์ ๋ญ๋น์ ๋๋ค.
- ๋ณต์กํ ๊ทธ๋ํฝ/์ ๋๋ฉ์ด์ : WebGL, Canvas ๋๋ ๋ณต์กํ ํํฐ, ๊ทธ๋ฆผ์, 3D ๋ณํ๊ณผ ๊ฐ์ ์ ๊ตํ CSS ํจ๊ณผ์ ๊ด๋ฒ์ํ ์ฌ์ฉ์ GPU์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ์ค๋ฒ๋๋ก์ฐ(Overdraw): ๋ ๋๋ง๋ ํ ๋ค๋ฅธ ์์์ ์ํด ๊ฐ๋ ค์ง๋ ์์๋ฅผ ๋ ๋๋งํ๋ ๊ฒ(์ค๋ฒ๋๋ก์ฐ)์ GPU ์ฃผ๊ธฐ๋ฅผ ๋ญ๋นํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ ์ข ์ข ์ค๋ฒ๋๋ก์ฐ๋ฅผ ์๊ฐํํ ์ ์์ต๋๋ค.
4. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: ๊ฐ์ ์ ์ด์ง๋ง ์ฐ๊ฒฐ๋จ
๋ฉ๋ชจ๋ฆฌ ์์ฒด๊ฐ CPU๋ ๋คํธ์ํฌ์ฒ๋ผ ์ฃผ๋ ์ ๋ ฅ ์๋ชจ์์ ์๋์ง๋ง, ๊ณผ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ข ์ข ์ฆ๊ฐ๋ CPU ํ๋(์: ๊ฐ๋น์ง ์ปฌ๋ ์ ์ฃผ๊ธฐ, ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ ์ฒ๋ฆฌ)๊ณผ ์๊ด๊ด๊ณ๊ฐ ์์ต๋๋ค. ๋ค์์ ํตํด ๋ฉ๋ชจ๋ฆฌ ์ํฅ์ ์ถ๋ก ํ ์ ์์ต๋๋ค:
- ๋ฉ๋ชจ๋ฆฌ ๋์: ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์๋ ์ฅ๊ธฐ ์คํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ง์ ์ผ๋ก ๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์๋นํ๊ฒ ๋์ด ๋ ์ฆ์ ๊ฐ๋น์ง ์ปฌ๋ ์ ๊ณผ ์ ์ฌ์ ์ผ๋ก ๋ ๋์ CPU ์ฌ์ฉ๋์ ์ด๋ํฉ๋๋ค.
- ํฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ: ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ณด์ ํ๋ฉด ๊ฐ์ ์ ์ผ๋ก ์ ๋ ฅ์ ์ํฅ์ ๋ฏธ์น๋ ์ฑ๋ฅ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ๋ถ์ง๋ฐํ ๋ชจ๋ํฐ๋งํ๊ณ ์ต์ ํํจ์ผ๋ก์จ, ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ ์ง์ ์ ์ธ ๋ฐฐํฐ๋ฆฌ API ์์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ ฅ ์๋น๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค.
์๋์ง ํจ์จ์ ์ธ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ํ ์ค์ฉ์ ์ธ ์ ๋ต
์ ๋ ฅ ์๋น ์ต์ ํ๋ ์ฑ๋ฅ์ ๋ํ ์ด์ฒด์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์์ฉํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ค์์ ๋ ์๋์ง ํจ์จ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ์คํ ๊ฐ๋ฅํ ์ ๋ต์ ๋๋ค:
1. JavaScript ์คํ ์ต์ ํ
- JavaScript ๋ฒ๋ค ํฌ๊ธฐ ์ต์ํ: ๋ชจ๋๊ณผ ์ปดํฌ๋ํธ์ ํธ๋ฆฌ ์์ดํน, ์ฝ๋ ์คํ๋ฆฌํ , ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ์ธ์. ์ฆ์ ํ์ํ JavaScript๋ง ์ ์กํ์ธ์. Webpack Bundle Analyzer์ ๊ฐ์ ๋๊ตฌ๋ ํฐ ์ฒญํฌ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ํจ์จ์ ์ธ ์ด๋ฒคํธ ์ฒ๋ฆฌ: ์คํฌ๋กค๋ง, ๋ฆฌ์ฌ์ด์ง, ์ ๋ ฅ๊ณผ ๊ฐ์ ์ด๋ฒคํธ์ ๋๋ฐ์ด์ฑ๊ณผ ์ค๋กํ๋ง์ ๊ตฌํํ์ธ์. ์ด๋ ๋น์ฉ์ด ๋ง์ด ๋๋ ํจ์ ํธ์ถ์ ๋น๋๋ฅผ ์ค์ ๋๋ค.
- ์น ์์ปค ํ์ฉ: ๊ณผ๋ํ ๊ณ์ฐ์ ๋ฉ์ธ ์ค๋ ๋์์ ์น ์์ปค๋ก ์คํ๋ก๋ํ์ธ์. ์ด๋ UI์ ๋ฐ์์ฑ์ ์ ์งํ๊ณ ๊ธด ์์ ์ด ๋ ๋๋ง์ ์ฐจ๋จํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- ์๊ณ ๋ฆฌ์ฆ ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ต์ ํ: ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ธ์. ๋ถํ์ํ ๋ฃจํ, ๊น์ DOM ์ํ ๋๋ ๋ฐ๋ณต์ ์ธ ๊ณ์ฐ์ ํผํ์ธ์.
- ์ค์ JavaScript ์ฐ์ ์์ ์ง์ : ์ค์ํ์ง ์์ ์คํฌ๋ฆฝํธ์
defer๋๋async์์ฑ์ ์ฌ์ฉํ์ฌ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ง ์๋๋ก ํ์ธ์.
2. ํจ์จ์ ์ธ ๋คํธ์ํฌ ์ฌ์ฉ
- ์์ฐ ์์ถ ๋ฐ ์ต์ ํ:
- ์ด๋ฏธ์ง: WebP๋ AVIF์ ๊ฐ์ ํ๋์ ์ธ ํ์์ ์ฌ์ฉํ์ธ์. ํ์ง์ ํฌ์ํ์ง ์์ผ๋ฉด์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ทน์ ์ผ๋ก ์์ถํ์ธ์. ๋ฐ์ํ ์ด๋ฏธ์ง๋ฅผ ๊ตฌํํ์ฌ(
srcset,sizes,picture) ๋ค์ํ ๊ธฐ๊ธฐ์ ์ ์ ํ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ฌํ์ธ์. - ๋น๋์ค: ์น์ฉ์ผ๋ก ๋น๋์ค๋ฅผ ์ธ์ฝ๋ฉํ๊ณ , ์คํธ๋ฆฌ๋ฐ์ ์ฌ์ฉํ๊ณ , ์ฌ๋ฌ ํ์์ ์ ๊ณตํ๋ฉฐ, ํ์ํ ๊ฒ๋ง ๋ฏธ๋ฆฌ ๋ก๋ํ์ธ์.
- ํ ์คํธ: HTML, CSS, JavaScript ํ์ผ์ GZIP ๋๋ Brotli ์์ถ์ด ํ์ฑํ๋์๋์ง ํ์ธํ์ธ์.
- ์ด๋ฏธ์ง: WebP๋ AVIF์ ๊ฐ์ ํ๋์ ์ธ ํ์์ ์ฌ์ฉํ์ธ์. ํ์ง์ ํฌ์ํ์ง ์์ผ๋ฉด์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ทน์ ์ผ๋ก ์์ถํ์ธ์. ๋ฐ์ํ ์ด๋ฏธ์ง๋ฅผ ๊ตฌํํ์ฌ(
- ์บ์ฑ ํ์ฉ: ๊ฐ๋ ฅํ HTTP ์บ์ฑ ํค๋๋ฅผ ๊ตฌํํ๊ณ ์๋น์ค ์์ปค๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ ๊ธ ์บ์ฑ ์ ๋ต(์:
stale-while-revalidate)์ ์ฌ์ฉํ์ฌ ๋ฐ๋ณต์ ์ธ ๋คํธ์ํฌ ์์ฒญ์ ์ต์ํํ์ธ์. - ์๋ํํฐ ์คํฌ๋ฆฝํธ ์ต์ํ: ๊ฐ ์๋ํํฐ ์คํฌ๋ฆฝํธ(๋ถ์, ๊ด๊ณ , ์์ ์์ ฏ)๋ ๋คํธ์ํฌ ์์ฒญ๊ณผ ์ ์ฌ์ ์ธ JavaScript ์คํ์ ์ถ๊ฐํฉ๋๋ค. ์ฌ์ฉ์ ๊ฐ์ฌํ๊ณ ์ต์ํํ์ธ์. ๋ผ์ด์ ์ค๊ฐ ํ์ฉํ๋ ๊ฒฝ์ฐ ์ง์ฐ ๋ก๋ฉํ๊ฑฐ๋ ๋ก์ปฌ์์ ํธ์คํ ํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- Preload, Preconnect, Prefetch ํ์ฉ: ๋ฆฌ์์ค ํํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ํ ๋ฆฌ์์ค ๋ก๋ฉ์ ์ต์ ํํ๋, ๋ถํ์ํ ๋คํธ์ํฌ ํ๋์ ํผํ๊ธฐ ์ํด ์ ์คํ๊ฒ ์ฌ์ฉํ์ธ์.
- HTTP/2 ๋ฐ HTTP/3: ์๋ฒ๊ฐ ๋ ํจ์จ์ ์ธ ๋ฉํฐํ๋ ์ฑ๊ณผ ๊ฐ์๋ ์ค๋ฒํค๋๋ฅผ ์ํด ์ด๋ฌํ ํ๋กํ ์ฝ์ ์ง์ํ๋์ง ํ์ธํ์ธ์.
- ์ ์ํ ๋ก๋ฉ: ํด๋ผ์ด์ธํธ ํํธ๋
Save-Dataํค๋๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ฆฌ๊ฑฐ๋ ๋น์ผ ๋คํธ์ํฌ์ ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๋ฒผ์ด ๊ฒฝํ์ ์ ๊ณตํ์ธ์.
3. ์ค๋งํธํ ๋ ๋๋ง ๋ฐ ๋ ์ด์์
- DOM ๋ณต์ก์ฑ ์ค์ด๊ธฐ: ๋ ํํํ๊ณ ์์ DOM ํธ๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ๋๋งํ๊ณ ์ ๋ฐ์ดํธํ๊ธฐ๊ฐ ๋ ์ฝ๊ณ ๋นจ๋ผ CPU ์์ ์ ์ค์ ๋๋ค.
- CSS ์ต์ ํ: ํจ์จ์ ์ธ CSS ์ ํ์๋ฅผ ์์ฑํ์ธ์. ๊ฐ์ ๋๊ธฐ์ ๋ ์ด์์(์คํ์ผ ์ฌ๊ณ์ฐ, ๋ฆฌํ๋ก์ฐ)์ ํผํ์ธ์.
- ํ๋์จ์ด ๊ฐ์ ์ ๋๋ฉ์ด์
: ์ ๋๋ฉ์ด์
์๋ CSS
transform๊ณผopacity๋ฅผ ์ ํธํ์ธ์. ์ด๋ค์ GPU๋ก ์คํ๋ก๋๋ ์ ์์ต๋๋ค. ๋ ์ด์์(width,height,left,top)์ด๋ ํ์ธํ (box-shadow,border-radius)์ ์ ๋ฐํ๋ ์์ฑ์ ์ ๋๋ฉ์ด์ ์ ๊ฐ๋ฅํ ํ ํผํ์ธ์. - ์ฝํ
์ธ ๊ฐ์์ฑ ๋ฐ CSS ๊ฒฉ๋ฆฌ:
content-visibilityCSS ์์ฑ์ด๋contain์์ฑ์ ์ฌ์ฉํ์ฌ DOM์ ์ผ๋ถ๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ํ ์์ญ์ ๋ ๋๋ง ์ ๋ฐ์ดํธ๊ฐ ์ ์ฒด ํ์ด์ง์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํ์ธ์. - ์ด๋ฏธ์ง ๋ฐ Iframe ์ง์ฐ ๋ก๋ฉ:
loading="lazy"์์ฑ์ด๋ JavaScript ๊ต์ฐจ ๊ด์ฐฐ์(Intersection Observer)๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง์ iframe์ด ๋ทฐํฌํธ์ ๋ค์ด์ฌ ๋๋ง ๋ก๋ํ์ธ์. - ๊ธด ๋ชฉ๋ก ๊ฐ์ํ: ๊ธด ์คํฌ๋กค ๋ชฉ๋ก์ ๊ฒฝ์ฐ, ์๋์์ด๋ ๊ฐ์ํ์ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋ณด์ด๋ ํญ๋ชฉ๋ง ๋ ๋๋งํ์ฌ DOM ์์์ ๋ ๋๋ง ์์ ์ ๊ทน์ ์ผ๋ก ์ค์ด์ธ์.
4. ๋คํฌ ๋ชจ๋ ๋ฐ ์ ๊ทผ์ฑ ๊ณ ๋ ค
- ๋คํฌ ๋ชจ๋ ์ ๊ณต: OLED ํ๋ฉด์ ๊ฐ์ง ๊ธฐ๊ธฐ์ ๊ฒฝ์ฐ, ๋คํฌ ๋ชจ๋๋ ๊ฒ์์ ํฝ์ ์ด ๋ณธ์ง์ ์ผ๋ก ๊บผ์ง๊ธฐ ๋๋ฌธ์ ์ ๋ ฅ ์๋น๋ฅผ ํฌ๊ฒ ์ค์ ๋๋ค. ์ฌ์ฉ์ ์ ํธ๋ ์์คํ ์ค์ ์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ๋คํฌ ํ ๋ง๋ฅผ ์ ๊ณตํ๋ฉด ์๋นํ ์๋์ง ์ ์ฝ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
- ๊ณ ๋๋น ๋ฐ ๊ฐ๋ ์ฑ: ์ข์ ๋ช ์๋น์ ์ฝ๊ธฐ ์ฌ์ด ๊ธ๊ผด์ ๋์ ํผ๋ก๋ฅผ ์ค์ฌ์ฃผ๋ฉฐ, ์ด๋ ๊ฐ์ ์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ํ๋ฉด ๋ฐ๊ธฐ๋ฅผ ๋์ผ ํ์์ฑ์ ์ค์ผ ์ ์์ต๋๋ค.
5. ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
- ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์ง: ํนํ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ฒคํธ ๋ฆฌ์ค๋, ํ์ด๋จธ, ํด๋ก์ ๋ฅผ ์ ์คํ๊ฒ ๊ด๋ฆฌํ์ฌ ๋ถ๋ฆฌ๋ DOM ์์๋ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋จ์ ์์ง ์๋๋ก ํ์ธ์.
- ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ: ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฒญํฌ ๋จ์๋ก ์ฒ๋ฆฌํ๊ณ , ์ฌ์ฉํ์ง ์๋ ๋ฐ์ดํฐ์ ๋ํ ์ฐธ์กฐ๋ฅผ ํด์ ํ๋ฉฐ, ๋ถํ์ํ๊ฒ ํฐ ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ณด์ ํ๋ ๊ฒ์ ํผํ์ธ์.
์ด๋ฌํ ๊ดํ์ ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์ ํตํฉํจ์ผ๋ก์จ, ๋น์ ์ ๋ ๋น ๋ฅด๊ณ ๋ฐ์์ฑ์ด ์ข์ ๋ฟ๋ง ์๋๋ผ ๋ ์๋์ง ํจ์จ์ ์ด๊ณ ์ ์ธ๊ณ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ์ํ ํฌ์ฉ์ ์ธ ์น์ ๊ธฐ์ฌํ๊ฒ ๋ฉ๋๋ค.
์ ๋ ฅ ์ธ์ ์ฑ๋ฅ ํ๋กํ์ผ๋ง์ ์ํ ๋๊ตฌ ๋ฐ ๋ฐฉ๋ฒ๋ก
์ง์ ์ ์ธ ์ ๋ ฅ ์ธก์ ์ด ์ด๋ ต์ง๋ง, ๋ ๋์ ์ ๋ ฅ ์๋น๋ก ์ด์ด์ง๋ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ์ง๋จํ๋ ๋ฐ ๋์์ด ๋๋ ๊ฐ๋ ฅํ ๋๊ตฌ๋ค์ด ์กด์ฌํฉ๋๋ค. ์ด๋ฅผ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ ์ํฌํ๋ก์ฐ์ ํตํฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
1. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ (Chrome, Firefox, Edge, Safari)
์ด๊ฒ๋ค์ ์ฑ๋ฅ ๋ถ์์ ์ํ ์ต์ ์ ๋๊ตฌ์ ๋๋ค:
- Performance ํญ: ์ด๊ฒ์ด ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋๊ตฌ์
๋๋ค. ์ธ์
์ ๊ธฐ๋กํ์ฌ ๋ค์์ ์๊ฐํํ์ธ์:
- CPU ํ๋: CPU๊ฐ JavaScript, ๋ ๋๋ง, ํ์ธํ , ๋ก๋ฉ์ผ๋ก ์ผ๋ง๋ ๋ฐ์์ง ํ์ธํ์ธ์. ๊ธ์ฆ๊ณผ ์ง์์ ์ธ ๋์ ์ฌ์ฉ๋์ ์ฐพ์ผ์ธ์.
- ๋คํธ์ํฌ ํ๋: ํญํฌ์ ์ฐจํธ๋ฅผ ๋ณด๊ณ ๋๋ฆฐ ์์ฒญ, ํฐ ๋ฆฌ์์ค, ๊ณผ๋ํ ๋ฐ์ดํฐ ์ ์ก์ ์๋ณํ์ธ์.
- ๋ฉ์ธ ์ค๋ ๋ ํ๋: ํธ์ถ ์คํ์ ๋ถ์ํ์ฌ ๋น์ฉ์ด ๋ง์ด ๋๋ JavaScript ํจ์๋ฅผ ์ฐพ์๋ด์ธ์. ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ๋ "๊ธด ์์ (Long Tasks)"์ ์๋ณํ์ธ์.
- ๋ ๋๋ง ๋ฐ ๋ ์ด์์: ๋ฆฌํ๋ก์ฐ(Layout) ๋ฐ ๋ฆฌํ์ธํธ(Paint) ์ด๋ฒคํธ๋ฅผ ๊ด์ฐฐํ์ฌ ๋ ๋๋ง ํจ์จ์ฑ์ ์ดํดํ์ธ์.
- Network ํญ: ํฌ๊ธฐ, ์๊ฐ, ํค๋๋ฅผ ํฌํจํ ๋ชจ๋ ๋ฆฌ์์ค ์์ฒญ์ ๋ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ต์ ํ๋์ง ์์ ์์ฐ์ด๋ ๋นํจ์จ์ ์ธ ์บ์ฑ์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- Memory ํญ: ํ ์ค๋ ์ท์ ์ฐ๊ณ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๊ด์ฐฐํ์ฌ ๋์๋ ๋นํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๊ฐ์งํ์ธ์. ์ด๋ ๊ฐ์ ์ ์ผ๋ก ๋ ๋์ CPU ํ๋(์: ๊ฐ๋น์ง ์ปฌ๋ ์ )์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- Lighthouse ๊ฐ์ฌ: Chrome DevTools์ ๋ด์ฅ๋์ด ์์ผ๋ฉฐ(CLI ๋๊ตฌ๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅ), Lighthouse๋ ์ฑ๋ฅ, ์ ๊ทผ์ฑ, ๋ชจ๋ฒ ์ฌ๋ก, SEO ๋ฐ ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ ๊ธฐ๋ฅ์ ๋ํ ์๋ํ๋ ๊ฐ์ฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฑ๋ฅ ์ ์(์: FCP, LCP, TBT, CLS, INP)๋ ์ ๋ ฅ ํจ์จ์ฑ๊ณผ ์ง์ ์ ์ธ ์๊ด๊ด๊ณ๊ฐ ์์ต๋๋ค. ๋์ Lighthouse ์ ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ์๋์ง ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ๋ ๋๋ค.
2. WebPageTest
๋ค์ํ ๊ธ๋ก๋ฒ ์์น, ๋คํธ์ํฌ ์กฐ๊ฑด(์: 3G, 4G, ์ผ์ด๋ธ) ๋ฐ ๊ธฐ๊ธฐ ์ ํ์์ ํฌ๊ด์ ์ธ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์ํ ๊ฐ๋ ฅํ ์ธ๋ถ ๋๊ตฌ์ ๋๋ค. ๋ค์์ ์ ๊ณตํฉ๋๋ค:
- ์์ธํ ํญํฌ์ ์ฐจํธ ๋ฐ ํ๋ฆ์คํธ๋ฆฝ.
- ์ฝ์ด ์น ๋ฐ์ดํ ๋ฉํธ๋ฆญ.
- ์ต์ ํ ๊ธฐํ.
- ์ค์ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ํ ์คํธ๋ฅผ ์คํํ ์ ์๋ ๊ธฐ๋ฅ์ผ๋ก, ์ ๋ ฅ ๊ด๋ จ ์ฑ๋ฅ์ ๋ ์ ํํ๊ฒ ํํํฉ๋๋ค.
3. ์ค์ ์ฌ์ฉ์ ๋ชจ๋ํฐ๋ง(RUM) ๋ฐ ํฉ์ฑ ๋ชจ๋ํฐ๋ง
- RUM: Google Analytics, SpeedCurve ๋๋ ์ฌ์ฉ์ ์ง์ ์๋ฃจ์ ๊ณผ ๊ฐ์ ๋๊ตฌ๋ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์์ ์ง์ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ์์งํฉ๋๋ค. ์ด๋ ๋ค์ํ ๊ธฐ๊ธฐ ๋ฐ ๋คํธ์ํฌ ์กฐ๊ฑด์์ ๋ค์ํ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ๊ท์คํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํฉ๋๋ค. FCP, LCP, INP์ ๊ฐ์ ๋ฉํธ๋ฆญ์ ๊ธฐ๊ธฐ ์ ํ ๋ฐ ์์น์ ์ฐ๊ด์์ผ ์ ๋ ฅ ์๋น๊ฐ ๋ ๋์ ์ ์๋ ์์ญ์ ์๋ณํ ์ ์์ต๋๋ค.
- ํฉ์ฑ ๋ชจ๋ํฐ๋ง: ํต์ ๋ ํ๊ฒฝ(์: ํน์ ๋ฐ์ดํฐ ์ผํฐ)์์ ์ ๊ธฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํฉ๋๋ค. ์ค์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ ์๋์ง๋ง ์ผ๊ด๋ ๊ธฐ์ค์ ์ ์ ๊ณตํ๊ณ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ์ ํ๋ฅผ ์ถ์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
4. ํ๋์จ์ด ์ ๋ ฅ๊ณ(์คํ์ค ํ ์คํธ)
์ผ์์ ์ธ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ค์ฉ์ ์ธ ๋๊ตฌ๋ ์๋์ง๋ง, ํน์ ํ๋์จ์ด ์ ๋ ฅ๊ณ(์: Monsoon Solutions ์ ๋ ฅ ๋ชจ๋ํฐ)๋ ๋ธ๋ผ์ฐ์ ๊ณต๊ธ์ ์ฒด, OS ๊ฐ๋ฐ์, ๊ธฐ๊ธฐ ์ ์กฐ์ ์ฒด์ ํต์ ๋ ์คํ์ค ํ๊ฒฝ์์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ค์ ์ ์ฒด ๊ธฐ๊ธฐ ๋๋ ํน์ ๊ตฌ์ฑ ์์์ ๋ํ ๋งค์ฐ ์ ํํ ์ค์๊ฐ ์ ๋ ฅ ์๋น ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ฃผ๋ก ์ผ๋ฐ์ ์ธ ์น ๊ฐ๋ฐ์ด ์๋ ํ๋ซํผ ์์ค์ ์ฌ์ธต ์ต์ ํ ๋ฐ ์ฐ๊ตฌ๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
ํ๋กํ์ผ๋ง ๋ฐฉ๋ฒ๋ก :
- ๊ธฐ์ค์ ์ค์ : ๋ณ๊ฒฝํ๊ธฐ ์ ์ ๋ํ์ ์ธ ์กฐ๊ฑด(์: ์ผ๋ฐ์ ์ธ ๊ธฐ๊ธฐ, ํ๊ท ๋คํธ์ํฌ ์๋)์์ ํ์ฌ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ์ธก์ ํ์ธ์.
- ์ฌ์ฉ์ ํ๋ฆ์ ์ง์ค: ํํ์ด์ง๋ง ํ ์คํธํ์ง ๋ง์ธ์. ์ค์ํ ์ฌ์ฉ์ ์ฌ์ (์: ๋ก๊ทธ์ธ, ๊ฒ์, ์ ํ ๊ตฌ๋งค)์ ํ๋กํ์ผ๋งํ์ธ์. ์ด๋ ์ข ์ข ๋ ๋ณต์กํ ์ํธ์์ฉ๊ณผ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํฌํจํฉ๋๋ค.
- ๋ค์ํ ์กฐ๊ฑด ์๋ฎฌ๋ ์ด์ : ๋ธ๋ผ์ฐ์ ์ค๋กํ๋ง๊ณผ WebPageTest๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์ผ๋ฐ์ ์ธ ๋๋ฆฐ ๋คํธ์ํฌ์ ์ ์ฌ์ ๊ธฐ๊ธฐ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ์ธ์.
- ๋ฐ๋ณต ๋ฐ ์ธก์ : ํ ๋ฒ์ ํ๋์ ์ต์ ํ๋ฅผ ์ํํ๊ณ ๊ทธ ์ํฅ์ ์ธก์ ํ๋ฉฐ ๋ฐ๋ณตํ์ธ์. ์ด๋ฅผ ํตํด ๊ฐ ๋ณ๊ฒฝ์ ํจ๊ณผ๋ฅผ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
- ํ ์คํธ ์๋ํ: ์ฑ๋ฅ ๊ฐ์ฌ(์: CI/CD์ Lighthouse CLI)๋ฅผ ํตํฉํ์ฌ ์ฑ๋ฅ ์ ํ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ์ธ์.
์๋์ง ํจ์จ์ ์ธ ์น์ ๋ฏธ๋: ์ง์ ๊ฐ๋ฅํ ๊ธธ
๋ ์๋์ง ํจ์จ์ ์ธ ์น์ ํฅํ ์ฌ์ ์ ๊ณ์๋๊ณ ์์ต๋๋ค. ๊ธฐ์ ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ต์ ํ๋ฅผ ์ํ ๋์ ๊ณผ ๊ธฐํ๋ ํจ๊ป ๋ฐ์ ํ ๊ฒ์ ๋๋ค.
1. ์น ํ๊ฒฝ ์ง์ ๊ฐ๋ฅ์ฑ ๋ ธ๋ ฅ
"์ง์ ๊ฐ๋ฅํ ์น ๋์์ธ"๊ณผ "๊ทธ๋ฆฐ ์ํํธ์จ์ด ์์ง๋์ด๋ง"์ ํฅํ ์์ง์์ด ์ปค์ง๊ณ ์์ต๋๋ค. ์น ์ง์ ๊ฐ๋ฅ์ฑ ๊ฐ์ด๋๋ผ์ธ๊ณผ ๊ฐ์ ์ด๋์ ํฐ๋ธ๋ ํ๊ฒฝ ์นํ์ ์ธ ๋์งํธ ์ ํ์ ๊ตฌ์ถํ๊ธฐ ์ํ ํฌ๊ด์ ์ธ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ฑ์ฅํ๊ณ ์์ต๋๋ค. ์ด๋ ๋จ์ํ ํ๋ก ํธ์๋ ์ฑ๋ฅ์ ๋์ด ์๋ฒ ์ธํ๋ผ, ๋ฐ์ดํฐ ์ ์ก, ์ฌ์ง์ด ๋์งํธ ์ ํ์ ์๋ช ์ข ๋ฃ๊น์ง ๊ณ ๋ ค ์ฌํญ์ ํ์ฅํฉ๋๋ค.
2. ์งํํ๋ ์น ํ์ค ๋ฐ API
์ง์ ์ ์ธ ์ ๋ ฅ API๋ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์ง๋ง, ๋ฏธ๋์ ์น ํ์ค์ ํจ์ฌ ๋ ์ธ๋ถํ๋ ์ต์ ํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ ์ ๊ตํ ์ฑ๋ฅ ๊ธฐ๋ณธ ์์๋ฅผ ๋์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ธฐ๊ธฐ ๋ด ๋จธ์ ๋ฌ๋์ ์ํ ์น ๋ด๋ด ๋คํธ์ํฌ API์ ๊ฐ์ API๋ ๋นํจ์จ์ ์ผ๋ก ๊ตฌํ๋ ๊ฒฝ์ฐ ์ ๋ ฅ ์๋น๋ฅผ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํ ๊ฒ์ ๋๋ค.
3. ๋ธ๋ผ์ฐ์ ํ์
๋ธ๋ผ์ฐ์ ๊ณต๊ธ์ ์ฒด๋ ์์ง์ ํจ์จ์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ง์์ ์ผ๋ก ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ ๋์ JavaScript JIT ์ปดํ์ผ๋ฌ, ๋ ์ต์ ํ๋ ๋ ๋๋ง ํ์ดํ๋ผ์ธ, ๋ ์ค๋งํธํ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ค์ผ์ค๋ง์ด ํฌํจ๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์ ์ต์ ์ํ๋ก ์ ์งํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฆ์ผ๋ก์จ ์ด๋ฌํ ๊ฐ์ ์ฌํญ์ ํ์ฉํ ์ ์์ต๋๋ค.
4. ๊ฐ๋ฐ์์ ์ฑ ์๊ณผ ๊ต์ก
๊ถ๊ทน์ ์ผ๋ก ์๋์ง ํจ์จ์ ์ฐ์ ์ํ๋ ์ฑ ์์ ๊ฐ๋ณ ๊ฐ๋ฐ์์ ๊ฐ๋ฐํ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ค์์ด ํ์ํฉ๋๋ค:
- ์ธ์: ์์ ์ ์ฝ๋๊ฐ ์ ๋ ฅ ์๋น์ ๋ฏธ์น๋ ์ํฅ์ ์ดํดํ๋ ๊ฒ.
- ๊ต์ก: ์ฑ๋ฅ ๋ฐ ์ง์ ๊ฐ๋ฅ์ฑ์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐฐ์ฐ๊ณ ์ ์ฉํ๋ ๊ฒ.
- ๋๊ตฌ ํตํฉ: ํ๋กํ์ผ๋ง ๋ฐ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ์ผ์์ ์ธ ์ํฌํ๋ก์ฐ์ ํตํฉํ๋ ๊ฒ.
- ๋์์ธ ์ฌ๊ณ : ๋จ์ํ ๋์ค์ ๊ณ ๋ คํ ์ฌํญ์ด ์๋๋ผ ์ด๊ธฐ ๋์์ธ ๋จ๊ณ๋ถํฐ ์ ๋ ฅ ํจ์จ์ฑ์ ๊ณ ๋ คํ๋ ๊ฒ.
๊ฒฐ๋ก : ๋ ํธ๋ฅด๊ณ ๋ ์ ๊ทผํ๊ธฐ ์ฌ์ด ์น์ ๋๋ ฅ์ ๊ณต๊ธํ๊ธฐ
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋์ง ๋ฐ์๊ตญ์ ๋ฌด์ํ๋ ์๋๋ ๋๋๊ฐ๊ณ ์์ต๋๋ค. ๊ธฐํ ๋ณํ์ ๋ํ ์ ์ธ๊ณ์ ์ธ์์ด ๋์์ง๊ณ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๊ฐ ์์ญ์ต ๋ช ์ ์ฃผ์ ์ธํฐ๋ท ๊ด๋ฌธ์ด ๋จ์ ๋ฐ๋ผ, ์๋์ง ํจ์จ์ ์ธ ํ๋ก ํธ์๋ ๊ฒฝํ์ ๊ตฌ์ถํ๋ ๋ฅ๋ ฅ์ ๋ ์ด์ ์์ผ๋ฉด ์ข์ ๊ฒ์ด ์๋๋ผ, ์ง์ ๊ฐ๋ฅํ๊ณ ํฌ์ฉ์ ์ธ ์น์ ์ํ ๊ธฐ๋ณธ ์๊ตฌ ์ฌํญ์ด ๋์์ต๋๋ค.
์ ๋ ฅ ์๋น๋ฅผ ์ธก์ ํ๊ธฐ ์ํ ์ง์ ์ ์ธ ์น API๋ ์ค์ํ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๋ฐ ๋ณด์ ๊ณ ๋ ค ์ฌํญ์ผ๋ก ์ธํด ์ฌ์ ํ ์์ํ์ง๋ง, ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์ ๊ฒฐ์ฝ ๋ฌด๋ ฅํ์ง ์์ต๋๋ค. ๊ธฐ์กด ์ฑ๋ฅ API์ ๊ฐ๋ ฅํ ํ๋กํ์ผ๋ง ๋๊ตฌ ๋ชจ์์ ํ์ฉํ์ฌ, ์ฐ๋ฆฌ๋ ์๋์ง ์๋ชจ๋ฅผ ์ ๋ฐํ๋ ๊ทผ๋ณธ์ ์ธ ์์ธ์ธ CPU ์ฌ์ฉ๋, ๋คํธ์ํฌ ํ๋, ๋ ๋๋ง ์์ ๋ถํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ถ๋ก ํ๊ณ , ์ง๋จํ๋ฉฐ, ์ต์ ํํ ์ ์์ต๋๋ค.
๋ฆฐ(lean) JavaScript, ํจ์จ์ ์ธ ์์ฐ ์ ๋ฌ, ์ค๋งํธ ๋ ๋๋ง, ๋คํฌ ๋ชจ๋์ ๊ฐ์ ์์์ ์ธ ๋์์ธ ์ ํ๊ณผ ๊ฐ์ ์ ๋ต์ ์์ฉํจ์ผ๋ก์จ, ์ฐ๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋น ๋ฅผ ๋ฟ๋ง ์๋๋ผ ๋ ์ง์ ๊ฐ๋ฅํ๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ ์ ํ์ผ๋ก ๋ณ๋ชจํฉ๋๋ค. ์ด๋ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ๋ณด์กดํ๋ ์ธ๋ด ์ง์ญ์ ์ฌ์ฉ์๋ถํฐ ๋ ์์ ํ์ ๋ฐ์๊ตญ์ ๊ธฐ์ฌํ๋ ์ ์ธ๊ณ ์๋ฏผ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ชจ๋์๊ฒ ์ด์ต์ด ๋ฉ๋๋ค.
ํ๋ ์ด๊ตฌ๋ ๋ช ํํฉ๋๋ค: ์ธก์ ์ ์์ํ๊ณ , ์ต์ ํ๋ฅผ ์์ํ๋ฉฐ, ์ฌ์ฉ์์ ๊ธฐ๊ธฐ์ ์ฐ๋ฆฌ ์ง๊ตฌ๋ฅผ ๋ชจ๋ ์กด์คํ๋ ์น์ ๊ตฌ์ถํ๋ ๋ฐ ํ์ ํ์ญ์์ค. ์น์ ๋ฏธ๋๋ ํจ์จ์ ์ด๊ณ ์ฑ ์๊ฐ ์๊ฒ ๋๋ ฅ์ ๊ณต๊ธํ๋ ค๋ ์ฐ๋ฆฌ์ ๊ณต๋ ๋ ธ๋ ฅ์ ๋ฌ๋ ค ์์ต๋๋ค.